package alg1_baseModel;
import edu.princeton.cs.algs4.StdOut;

// 编写一个递归的静态方法计算ln(N! )的值。
public class Test1_1_20 {
    /*
     * 方法一
     */
    public static double lnN(int N) {
        return Math.log(recursive(N));
    }
    public static double recursive(double N) {
        if (N == 1 || N == 0) return 1;
        return recursive(N - 1) * N;
    }
    /*
     * 方法二
     */
    public static double lnN2(int N) {
        if (N == 1 || N == 0) return 0;
        return lnN2(N - 1) + Math.log(N);
    }
    public static void main(String[] args) {
        int N = 10;
        for(int i = 0; i < N; i++)
            StdOut.println(lnN(i));

        StdOut.println();
        for (int i = 0; i < N; i++)
            StdOut.println(lnN2(i));
    }
}
